import { ipcMain } from 'electron'
import { sqQuery } from './index'
// import OpenAI from 'openai'
import axios from 'axios'

// async function askAi(prompt, his = []) {
//   const url = 'http://36.140.96.138:7866/stream_query'
//   const postData = {
//     prompt: prompt,
//     userid: 'test_user',
//     kb_ids: [],
//     kg_dir: '',
//     his: his
//   }
//
//   let resultString = ''
//
//   return new Promise((resolve, reject) => {
//     axios({
//       method: 'post',
//       url: url,
//       responseType: 'stream', // 关键：声明响应为流
//       data: { ...postData } // POST 请求体
//     })
//       .then(res => {
//         // 正确访问流对象：res.data
//         res.data.on('data', chunk => {
//           if (chunk.toString().split(':')[0] === 'data' && chunk.toString().split(':')[1].trim().length
//           >0) {
//             resultString += chunk.toString().split(':')[1]
//           }
//           if (chunk.toString().split(':')[0] === 'event' && chunk.toString().split(':').length === 3) {
//             resultString = resultString.replace(/\n/gm,"")
//             resolve(resultString)
//           }
//         })
//       })
//       .catch(error => {
//         console.error(' 请求失败:', error)
//         reject(error)
//       })
//   })
// }

// async function askAi(content){
//   const openai = new OpenAI({
//     apiKey: "f88229ed-83a2-4b89-a804-ebb3ce2c1c34",
//     baseURL: "https://ark.cn-beijing.volces.com/api/v3",
//     dangerouslyAllowBrowser: true
//   });
//   const completion = await openai.chat.completions.create({
//     messages: [{ role: "user", content: content }],
//     model: "ep-20250901093146-jkcml"
//   });
//   return completion.choices[0].message.content;
// }

async function askAi(content) {
  const headers = {
    Authorization: `Bearer app-IBisdx31U5C0hQ6jOuneJ3l9`,
    'Content-Type': 'application/json'
  }
  const data = {
    query: content,
    user: '111',
    response_mode: 'blocking',
    inputs: {}
  }

  try {
    const response = await axios.post('https://ai.nbsedu.com.cn:49443/v1/chat-messages', data, { headers })
    return response.data.answer
  } catch (error) {
    throw new Error(`API请求失败: ${error.message}`)
  }
}

ipcMain.handle('statistics-list', async (event, data) => {
  let list = await sqQuery({
    sql: `
      SELECT t.*, p.name as projectName
      FROM time t
      LEFT JOIN project p ON t.projectId = p.id
      WHERE t.date >= ? AND t.date <= ?
      `,
    params: [data.startDate, data.endDate]
  })

  let groups = Object.groupBy(list, item => item.projectId)
  let res = []

  for (const key in groups) {
    const projectId = key
    const projectName = groups[key][0].projectName
    const time = groups[key].reduce((acc, cur) => acc + cur.time, 0)

    let aiContent = ''

    console.log(groups[key].map(item => item.content))
    if (data.aiSummary) {
      const contents = groups[key].map(item => item.content)
      const prompt = `根据用户提供的每日工作内容数组，按以下步骤处理：
    1. 文本预处理：去除重复的条目，合并表述不同但实质相同的任务
    2. 内容概括：保留技术性描述（如组件开发、API对接）的同时使用更简洁的行业术语
    3. 分类排序：按功能模块（如页面开发、接口联调）和优先级排列工作项
    4. 格式标准化：严格使用阿拉伯数字接中文逗号的列表格式
    5. 结果验证：确保最终条目无重复且完全覆盖原始工作内容
    6. 如果数组只有一项，直接返回这条

    特殊要求：
    - 禁止任何形式的Markdown或XML标记
    - 不需说明处理过程，直接以“1. ... \\n 2. ... \\n 3. ...”的形式输出最终列表`
      aiContent = await askAi(JSON.stringify(contents) + prompt)
    }

    res.push({
      projectId,
      projectName,
      time,
      aiContent
    })
  }

  return res
})

ipcMain.handle('ask', async (event, data) => {
  let his = [`回答者:
回答者:嗯。
回答者:不需。
提问者:喂。
提问者:喂，你好。
回答者:嗯，好。
回答者:嗯，我问一下，高新区教育局的电话是多少?
提问者:嗯，我问一下，高新区教育局的电话是多少?
提问者:好的，再见。`]

  let prompt = `根据“提问者”与“回答者”之间的对话，帮我按以下要求进行总结:
1.以疑问句的形式表现“提问者”想要咨询的主要问题，不要使用陈述句，
2.不要参考对话中的信息，只通过知识库中的内容对问题分别给出针对性的，明确的回答，也不要出现“不清楚”“可能”等词语。
3.按问题1、回答1，问题2、答2.
的格式列出。`

  try {
    let res = await askAi(prompt, his)
    console.log('result:', res)
    return res
  } catch (e) {
    console.log(e)
  }
})
